DigiOffice Gateway Web Services

<back to all web services

ProcessProjectRequestMessage

Requires Authentication
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Environment:
    title: Optional[str] = None
    code: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Party:
    title: Optional[str] = None
    code: Optional[str] = None
    version: Optional[str] = None
    environment: Optional[Environment] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Header:
    message_i_d: Optional[str] = None
    timestamp: datetime.datetime = datetime.datetime(1, 1, 1)
    sender: Optional[Party] = None
    recipient: Optional[Party] = None
    request_message_i_d: Optional[Object] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Reference:
    global_i_d: Optional[str] = None
    title: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Address:
    address_line1: Optional[str] = None
    address_line2: Optional[str] = None
    house_number: Optional[str] = None
    house_number_suffix: Optional[str] = None
    postal_code: Optional[str] = None
    city: Optional[str] = None
    country: Optional[Reference] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class MailingAddress:
    po_box: Optional[str] = None
    postal_code: Optional[str] = None
    city: Optional[str] = None
    country: Optional[Reference] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Project:
    global_i_d: Optional[str] = None
    creation_date: Optional[datetime.datetime] = None
    created_by: Optional[str] = None
    modified_date: Optional[datetime.datetime] = None
    modified_by: Optional[str] = None
    code: Optional[str] = None
    name: Optional[str] = None
    description1: Optional[str] = None
    description2: Optional[str] = None
    address: Optional[Address] = None
    mailing_address: Optional[MailingAddress] = None
    project_category_reference: Optional[Reference] = None
    project_type_reference: Optional[Reference] = None
    project_status_reference: Optional[Reference] = None
    start_date: Optional[datetime.datetime] = None
    end_date: Optional[datetime.datetime] = None
    completion_date: Optional[datetime.datetime] = None
    inactive: bool = False
    website: Optional[str] = None
    is_template_project: bool = False
    custom_fields: Optional[List[CustomField]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProjectResponseMessage:
    header: Optional[Header] = None
    project_reference: Optional[Reference] = None
    project: Optional[Project] = None
    housing_types: Optional[List[HousingType]] = None
    construction_blocks: Optional[List[ConstructionBlock]] = None
    construction_numbers: Optional[List[ConstructionNumber]] = None
    documents: Optional[List[Document]] = None
    purchase_contracts: Optional[List[PurchaseContract]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProjectRequestMessage:
    header: Optional[Header] = None
    project_reference: Optional[Reference] = None
    include_housing_types: bool = False
    include_construction_blocks: bool = False
    include_construction_numbers: bool = False
    include_documents: bool = False
    include_purchase_contracts: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProcessProjectRequestMessage:
    instance_id: Optional[str] = None
    project_request: Optional[ProjectRequestMessage] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CustomField:
    name: Optional[str] = None
    value: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class HousingType:
    global_i_d: Optional[str] = None
    project_reference: Optional[Reference] = None
    code: Optional[str] = None
    description: Optional[str] = None
    custom_fields: Optional[List[CustomField]] = None
    creation_date: Optional[datetime.datetime] = None
    created_by: Optional[str] = None
    modified_date: Optional[datetime.datetime] = None
    modified_by: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ConstructionBlock:
    global_i_d: Optional[str] = None
    project_reference: Optional[Reference] = None
    code: Optional[str] = None
    description: Optional[str] = None
    custom_fields: Optional[List[CustomField]] = None
    creation_date: Optional[datetime.datetime] = None
    created_by: Optional[str] = None
    modified_date: Optional[datetime.datetime] = None
    modified_by: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ConstructionNumber:
    global_i_d: Optional[str] = None
    project_reference: Optional[Reference] = None
    housing_type_reference: Optional[Reference] = None
    construction_block_reference: Optional[Reference] = None
    code: Optional[str] = None
    description: Optional[str] = None
    address: Optional[Address] = None
    rental_house: bool = False
    guarantee_certificate_number: Optional[str] = None
    inactive: bool = False
    custom_fields: Optional[List[CustomField]] = None
    creation_date: Optional[datetime.datetime] = None
    created_by: Optional[str] = None
    modified_date: Optional[datetime.datetime] = None
    modified_by: Optional[str] = None
    viewing_date: Optional[datetime.datetime] = None
    viewing_date_specified: bool = False
    delivery_date: Optional[datetime.datetime] = None
    delivery_date_specified: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Document(ICustomProperties):
    id: Optional[str] = None
    root_document_i_d: Optional[str] = None
    registrationprofile_i_d: Optional[str] = None
    title: Optional[str] = None
    full_title: Optional[str] = None
    number: Optional[str] = None
    version: Optional[str] = None
    external_number: Optional[str] = None
    external_version: Optional[str] = None
    internal_number: Optional[str] = None
    internal_invoice_number: Optional[str] = None
    person_i_d: int = 0
    relation_i_d: int = 0
    relation_title: Optional[str] = None
    project_i_d: int = 0
    project_title: Optional[str] = None
    extension: Optional[str] = None
    date: Optional[datetime.datetime] = None
    comments_count: int = 0
    has_comments: bool = False
    has_preview: bool = False
    extra_field: Optional[str] = None
    is_favorite: bool = False
    documentcategory_text: Optional[str] = None
    file_size: Optional[int] = None
    file_date: Optional[datetime.datetime] = None
    hash: Optional[str] = None
    hash_type: Optional[str] = None
    file_url: Optional[str] = None
    standard_document_url: Optional[str] = None
    is_corporate_identity: bool = False
    user_title: Optional[str] = None
    is_frozen: bool = False
    internal_company_i_d: int = 0
    direct_url: Optional[str] = None
    allow_digital_signing_only_on_primary_versions: bool = False
    is_primary_version: bool = False
    file_extension: Optional[str] = None
    custom_properties: Optional[Dict[str, Object]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Relation:
    global_i_d: Optional[str] = None
    name_line1: Optional[str] = None
    name_line2: Optional[str] = None
    address: Optional[Address] = None
    mailing_address: Optional[MailingAddress] = None
    telephone: Optional[str] = None
    mobile: Optional[str] = None
    email: Optional[str] = None
    iban: Optional[str] = None
    bank_account_number: Optional[str] = None
    website: Optional[str] = None
    inactive: bool = False
    custom_fields: Optional[List[CustomField]] = None
    creation_date: Optional[datetime.datetime] = None
    created_by: Optional[str] = None
    modified_date: Optional[datetime.datetime] = None
    modified_by: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PurchaseContract:
    global_i_d: Optional[str] = None
    code: Optional[str] = None
    description: Optional[str] = None
    project_reference: Optional[Reference] = None
    product_code: Optional[str] = None
    relation: Optional[Relation] = None
    inactive: bool = False
    custom_fields: Optional[List[CustomField]] = None
    creation_date: Optional[datetime.datetime] = None
    created_by: Optional[str] = None
    modified_date: Optional[datetime.datetime] = None
    modified_by: Optional[str] = None

Python ProcessProjectRequestMessage DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /jsv/reply/ProcessProjectRequestMessage HTTP/1.1 
Host: kpm_digiofficeapigateway.tbi.nl 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	ProjectRequest: 
	{
		Header: 
		{
			MessageID: String,
			Timestamp: 0001-01-01,
			Sender: 
			{
				Title: String,
				Code: String,
				Version: String,
				Environment: 
				{
					Title: String,
					Code: String
				}
			},
			Recipient: 
			{
				Title: String,
				Code: String,
				Version: String,
				Environment: 
				{
					Title: String,
					Code: String
				}
			},
			RequestMessageID: {}
		},
		ProjectReference: 
		{
			GlobalID: String,
			Title: String
		},
		IncludeHousingTypes: False,
		IncludeConstructionBlocks: False,
		IncludeConstructionNumbers: False,
		IncludeDocuments: False,
		IncludePurchaseContracts: False
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Header: 
	{
		MessageID: String,
		Timestamp: 0001-01-01,
		Sender: 
		{
			Title: String,
			Code: String,
			Version: String,
			Environment: 
			{
				Title: String,
				Code: String
			}
		},
		Recipient: 
		{
			Title: String,
			Code: String,
			Version: String,
			Environment: 
			{
				Title: String,
				Code: String
			}
		},
		RequestMessageID: {}
	},
	ProjectReference: 
	{
		GlobalID: String,
		Title: String
	},
	Project: 
	{
		GlobalID: String,
		CreationDate: 0001-01-01,
		CreatedBy: String,
		ModifiedDate: 0001-01-01,
		ModifiedBy: String,
		Code: String,
		Name: String,
		Description1: String,
		Description2: String,
		Address: 
		{
			AddressLine1: String,
			AddressLine2: String,
			HouseNumber: String,
			HouseNumberSuffix: String,
			PostalCode: String,
			City: String,
			Country: 
			{
				GlobalID: String,
				Title: String
			}
		},
		MailingAddress: 
		{
			POBox: String,
			PostalCode: String,
			City: String,
			Country: 
			{
				GlobalID: String,
				Title: String
			}
		},
		ProjectCategoryReference: 
		{
			GlobalID: String,
			Title: String
		},
		ProjectTypeReference: 
		{
			GlobalID: String,
			Title: String
		},
		ProjectStatusReference: 
		{
			GlobalID: String,
			Title: String
		},
		StartDate: 0001-01-01,
		EndDate: 0001-01-01,
		CompletionDate: 0001-01-01,
		Inactive: False,
		Website: String,
		IsTemplateProject: False,
		CustomFields: 
		[
			{
				Name: String,
				Value: String
			}
		]
	},
	HousingTypes: 
	[
		{
			GlobalID: String,
			ProjectReference: 
			{
				GlobalID: String,
				Title: String
			},
			Code: String,
			Description: String,
			CustomFields: 
			[
				{
					Name: String,
					Value: String
				}
			],
			CreationDate: 0001-01-01,
			CreatedBy: String,
			ModifiedDate: 0001-01-01,
			ModifiedBy: String
		}
	],
	ConstructionBlocks: 
	[
		{
			GlobalID: String,
			ProjectReference: 
			{
				GlobalID: String,
				Title: String
			},
			Code: String,
			Description: String,
			CustomFields: 
			[
				{
					Name: String,
					Value: String
				}
			],
			CreationDate: 0001-01-01,
			CreatedBy: String,
			ModifiedDate: 0001-01-01,
			ModifiedBy: String
		}
	],
	ConstructionNumbers: 
	[
		{
			GlobalID: String,
			ProjectReference: 
			{
				GlobalID: String,
				Title: String
			},
			HousingTypeReference: 
			{
				GlobalID: String,
				Title: String
			},
			ConstructionBlockReference: 
			{
				GlobalID: String,
				Title: String
			},
			Code: String,
			Description: String,
			Address: 
			{
				AddressLine1: String,
				AddressLine2: String,
				HouseNumber: String,
				HouseNumberSuffix: String,
				PostalCode: String,
				City: String,
				Country: 
				{
					GlobalID: String,
					Title: String
				}
			},
			RentalHouse: False,
			GuaranteeCertificateNumber: String,
			Inactive: False,
			CustomFields: 
			[
				{
					Name: String,
					Value: String
				}
			],
			CreationDate: 0001-01-01,
			CreatedBy: String,
			ModifiedDate: 0001-01-01,
			ModifiedBy: String,
			ViewingDate: 0001-01-01,
			ViewingDateSpecified: False,
			DeliveryDate: 0001-01-01,
			DeliveryDateSpecified: False
		}
	],
	Documents: 
	[
		{
			GlobalID: String,
			RootDocumentID: String,
			Code: String,
			Subject: String,
			VersionNumber: String,
			NewestVersion: False,
			RelationReference: 
			{
				GlobalID: String,
				Title: String
			},
			DocumentTypeReference: 
			{
				GlobalID: String,
				Title: String
			},
			ProjectReference: 
			{
				GlobalID: String,
				Title: String
			},
			ConstructionBlockReference: 
			{
				GlobalID: String,
				Title: String
			},
			ConstructionNumberReference: 
			{
				GlobalID: String,
				Title: String
			},
			HousingTypeReference: 
			{
				GlobalID: String,
				Title: String
			},
			Floor: 0,
			FloorSpecified: False,
			DeletedDate: 0001-01-01,
			DeletedDateSpecified: False,
			File: 
			{
				Type: String,
				Name: String,
				Size: 0,
				Content: String,
				ModifiedDate: 0001-01-01
			},
			CustomFields: 
			[
				{
					Name: String,
					Value: String
				}
			],
			CreationDate: 0001-01-01,
			CreatedBy: String,
			ModifiedDate: 0001-01-01,
			ModifiedBy: String
		}
	],
	PurchaseContracts: 
	[
		{
			GlobalID: String,
			Code: String,
			Description: String,
			ProjectReference: 
			{
				GlobalID: String,
				Title: String
			},
			ProductCode: String,
			Relation: 
			{
				GlobalID: String,
				NameLine1: String,
				NameLine2: String,
				Address: 
				{
					AddressLine1: String,
					AddressLine2: String,
					HouseNumber: String,
					HouseNumberSuffix: String,
					PostalCode: String,
					City: String,
					Country: 
					{
						GlobalID: String,
						Title: String
					}
				},
				MailingAddress: 
				{
					POBox: String,
					PostalCode: String,
					City: String,
					Country: 
					{
						GlobalID: String,
						Title: String
					}
				},
				Telephone: String,
				Mobile: String,
				Email: String,
				IBAN: String,
				BankAccountNumber: String,
				Website: String,
				Inactive: False,
				CustomFields: 
				[
					{
						Name: String,
						Value: String
					}
				],
				CreationDate: 0001-01-01,
				CreatedBy: String,
				ModifiedDate: 0001-01-01,
				ModifiedBy: String
			},
			Inactive: False,
			CustomFields: 
			[
				{
					Name: String,
					Value: String
				}
			],
			CreationDate: 0001-01-01,
			CreatedBy: String,
			ModifiedDate: 0001-01-01,
			ModifiedBy: String
		}
	]
}